Pivotal TrackerのAPIで、PBIのDescriptionを更新(追記)する
Pivotal TrackerにあるたくさんのPBIを更新します。
スクラムのプロジェクト管理にPivotal Trackerを使っています。 このとき、PBIのテンプレートを自分たちで用意してしているのですが、テンプレートを更新するとき、バックログにある既存PBIの内容も更新したいです。
手動で更新するのは大変なので、Pivotal TrackerのAPIを使って更新を試してみます。
おすすめの方
- Pivotal TrackerのAPIを使いたい方
- Pivotal TrackerのAPIでPBIを更新したい方
Pivotal TrackerのAPIトークンを取得する
下記を参考にしてAPIトークンを取得します。
Pivotal TrackerのAPIで、PBIのDescriptionを更新する
いまのPBIを確認する
いくつかのPBIのDescriptionを確認します。
これらのPBIに対して、DESCRIPTIONに下記を追記してみます。
## 影響範囲 - 対応後に記載する
PBIの一覧を取得して、Descriptionを更新するスクリプト
次のAPIを利用します。
本記事ではPythonで書いてみました。 PBIの一覧を取得する方法の詳細は、次をご覧ください。
import json import urllib.parse import requests import textwrap from time import sleep API_ENDPOINT = 'https://www.pivotaltracker.com/services/v5' TOKEN = 'you_token' PROJECT_ID = 'xxx' def main(): result = search() for item in result['stories']['stories']: print(item.get('id')) new_description = make_new_description(item.get('description', '')) update_pbi(item.get('id'), new_description) sleep(1) print('------') print(result['stories']['total_hits']) def search(): headers = { 'X-TrackerToken': TOKEN, } # わかりやすさ優先でListで書いてみる query = [ 'type:feature,bug,chore', 'state:unscheduled,unstarted', ] url_query = { # キーワードの区切りは半角空白 'query': ' '.join(query), } parameter = urllib.parse.urlencode(url_query) resp = requests.get( f'{API_ENDPOINT}/projects/{PROJECT_ID}/search?{parameter}', headers=headers ) return resp.json() def make_new_description(description: str) -> str: add_message = textwrap.dedent(''' ## 影響範囲 - 対応後に記載する ''') return description + add_message def update_pbi(story_id: int, description: str): headers = { 'X-TrackerToken': TOKEN, 'Content-Type': 'application/json', } payload = { 'description': description, } requests.put( f'{API_ENDPOINT}/projects/{PROJECT_ID}/stories/{story_id}', headers=headers, data=json.dumps(payload) ) if __name__ == '__main__': main()
実行する
python app.py
結果を確認する
無事にDescriptionが更新されました。
さいごに
Pivotal Trackerで既存PBIを更新する場合などに役に立つと思います。参考になれば幸いです。